#include "bloques.h"
#include <time.h>

#define FILESIZE_AVG 4 // Numero de bloques que tiene un fichero de media
#define INODESIZE 64   // Tamaño en bytes que ocupa un inodo

struct superbloque {
	int primer_bloque_mb;	// Numero del primer bloque del mapa de bits
	int ultimo_bloque_mb;	// Numero del primer bloque del mapa de bits
	int primer_bloque_i;    // Numero del primer bloque del array de inodos
	int ultimo_bloque_i;    // Numero del ultimo bloque del array de inodos
	int primer_bloque_d;    // Numero del primer bloque de datos
	int ultimo_bloque_d;    // Numero del ultimo bloque de datos
	int root_i;		// Inodo del directorio raiz
	int primer_inodo_libre;	// Numero del primer inodo libre
	int n_bloques_libres;	// Cantidad de bloques libres
	int n_inodos_libres;	// Cantidad de inodos libres
	int n_bloques;		// Cantidad total de bloques
	int n_inodos;		// Cantidad total de inodos
};

struct inodo {
	int tipo;		// Tipo del inodo: libre, directorio o fichero
	int size;		// Tamaño del fichero
	time_t fecha;		// Fecha de creacion del fichero/directorio
	int fecha_mod;		// Ultima nodificacion del fichero
	int n_bloques;		// Cantidad de bloques asignados
	int directos[8];	// Punteros a bloques directos
	int indir_1;		// Puntero indirecto de nivel 1
	int indir_2;		// Puntero indirecto de nivel 2
	int indir_3;		// Puntero indirecto de nivel 3
};

int tamAI(unsigned int bloques);
int tamMB(unsigned int bloques);
int initSB(struct superbloque *sb);
int initMB(unsigned int bloques); 
